﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BLLTZS.Funcionalidad
{
    public class BLLContacto: BLLGenerico
    {
        public BLLContacto(TZSDataContext contexto) : base(contexto) { }
        public BLLContacto() : this(new TZSDataContext()) { }

        public TZS_Contacto TraerUltimaVersion(string nombreUsuario)
        {
            return (from c in Contexto.TZS_Contactos
                    where c.TZS_Perfil.TZS_Usuario.NombreUsuario.ToLower().Equals(nombreUsuario.ToLower())
                    orderby c.Version descending
                    select c).FirstOrDefault();
        }

        public void CrearNuevo(TZS_Perfil perfil)
        {
            TZS_Contacto nuevoContacto = new TZS_Contacto();
            nuevoContacto.TZS_Perfil = perfil;
            nuevoContacto.Version = 1;
            Contexto.TZS_Contactos.InsertOnSubmit(nuevoContacto);
        }

        public void GuardarNuevaVersion(TZS_Contacto contacto, string nombreUsuario)
        {
            TZS_Contacto versionVieja = TraerUltimaVersion(nombreUsuario);

            contacto.TZS_Perfil = versionVieja.TZS_Perfil;
            contacto.Version = versionVieja.Version + 1;
            Contexto.TZS_Contactos.InsertOnSubmit(contacto);
        }

        public List<TZS_Contacto> TraerHistorial(int idUsuario)
        {
            return (from c in Contexto.TZS_Contactos
                    where c.TZS_Perfil.IdUsuario == idUsuario
                    orderby c.Version descending
                    select c).ToList();
        }

        public TZS_Contacto TraerUltimoContactoPor(string email)
        {
            return (from c in Contexto.TZS_Contactos
                    where c.Email.ToLower().Equals(email.ToLower())
                    orderby c.IdContacto descending
                    select c).FirstOrDefault();
        }
    }
}
